package com.loong.android.http;

import com.loong.android.http.request.StringDeleteRequest;
import com.loong.android.http.request.FileGetRequest;
import com.loong.android.http.request.StringGetRequest;
import com.loong.android.http.request.StringPostRequest;
import com.loong.android.http.request.StringPutRequest;
import com.loong.android.http.response.FileResponse;
import com.loong.android.http.response.StringResponse;
import com.lzy.okgo.model.Progress;

/**
 * HTTP请求的接口事件
 */
public class RequestEvent {

    /**
     * get请求接口事件
     */
    public abstract static class GetEvent {
        /**
         * 请求开始
         *
         * @param request 请求数据
         */
        public void onStart(StringGetRequest request) {

        }

        /**
         * 请求成功
         *
         * @param response 请求响应数据
         */
        public void onSuccess(StringResponse response) {

        }

        /**
         * 请求成功
         *
         * @param response 请求响应数据
         */
        public void onCacheSuccess(StringResponse response) {

        }

        /**
         * 请求错误
         *
         * @param response 请求响应数据
         */
        public void onError(StringResponse response) {

        }

        /**
         * 请求结束
         */
        public void onFinish() {

        }
    }

    /**
     * post请求接口事件
     */
    public abstract static class PostEvent {
        /**
         * 请求开始
         *
         * @param request 请求数据
         */
        public void onStart(StringPostRequest request) {

        }

        /**
         * 请求成功
         *
         * @param response 请求响应数据
         */
        public void onSuccess(StringResponse response) {

        }

        /**
         * 请求成功
         *
         * @param response 请求响应数据
         */
        public void onCacheSuccess(StringResponse response) {

        }

        /**
         * 上传进度变化
         *
         * @param progress 进度数据
         */
        public void onUploadProgress(Progress progress) {

        }

        /**
         * 请求错误
         *
         * @param response 请求响应数据
         */
        public void onError(StringResponse response) {

        }

        /**
         * 请求结束
         */
        public void onFinish() {

        }
    }

    /**
     * put请求接口事件
     */
    public abstract static class PutEvent {
        /**
         * 请求开始
         *
         * @param request 请求数据
         */
        public void onStart(StringPutRequest request) {

        }

        /**
         * 请求成功
         *
         * @param response 请求响应数据
         */
        public void onSuccess(StringResponse response) {

        }

        /**
         * 请求成功
         *
         * @param response 请求响应数据
         */
        public void onCacheSuccess(StringResponse response) {

        }

        /**
         * 请求错误
         *
         * @param response 请求响应数据
         */
        public void onError(StringResponse response) {

        }

        /**
         * 请求结束
         */
        public void onFinish() {

        }
    }

    /**
     * delete请求接口事件
     */
    public abstract static class DeleteEvent {
        /**
         * 请求开始
         *
         * @param request 请求数据
         */
        public void onStart(StringDeleteRequest request) {

        }

        /**
         * 请求成功
         *
         * @param response 请求响应数据
         */
        public void onSuccess(StringResponse response) {

        }

        /**
         * 请求成功
         *
         * @param response 请求响应数据
         */
        public void onCacheSuccess(StringResponse response) {

        }

        /**
         * 请求错误
         *
         * @param response 请求响应数据
         */
        public void onError(StringResponse response) {

        }

        /**
         * 请求结束
         */
        public void onFinish() {

        }
    }

    /**
     * 文件下载请求接口事件
     */
    public abstract static class DownloadEvent {
        /**
         * 请求开始
         *
         * @param request 请求数据
         */
        public void onStart(FileGetRequest request) {

        }

        /**
         * 请求成功
         *
         * @param response 请求响应数据
         */
        public void onSuccess(FileResponse response) {

        }

        /**
         * 请求成功
         *
         * @param response 请求响应数据
         */
        public void onCacheSuccess(FileResponse response) {

        }

        /**
         * 下载进度变化
         *
         * @param progress 进度数据
         */
        public void onDownloadProgress(Progress progress) {

        }

        /**
         * 请求错误
         *
         * @param response 请求响应数据
         */
        public void onError(FileResponse response) {

        }

        /**
         * 请求结束
         */
        public void onFinish() {

        }
    }
}
